#include<stack>
using namespace std;
#include<string>

class Solution {
public:
    bool isValidSerialization(string preorder) {
        stack<char> s;
        string::iterator it = preorder.begin();
        if (preorder[0] == '#' && preorder.size() == 1)
            return true;
        while (it != preorder.end())
        {
            if (*it != ',')
            {
                if (*it == '#' &&!s.empty()&& s.top() == '#')
                {
                    s.pop();
                    if (s.empty())
                        return false;
                    s.pop();
                    if (!s.empty() && s.top() == '#')
                    {
                        s.pop();
                        if (s.empty())
                            return false;
                        s.pop();
                        s.push('#');
                    }
                    else
                        s.push('#');
                }
                else
                    s.push(*it);

            }
            it++;
        }
        while (!s.empty())
        {
            if (s.size() == 1 && s.top() == '#')
                break;
            char tem = s.top();
            s.pop();
            if (!s.empty() && tem == '#' && s.top() == '#')
            {
                s.pop();
                if (s.empty())
                    return false;
                s.pop();
                s.push('#');

            }
            else
            {
                return false;
            }

        }
        return true;
    }
};

int main()
{
    Solution s;
    s.isValidSerialization("9,#,92,#,#");
}